<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>NumCpp: Poly1d.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="NumCppLogoDoxygen.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">NumCpp
   &#160;<span id="projectnumber">2.3.1</span>
   </div>
   <div id="projectbrief">A Templatized Header Only C++ Implementation of the Python NumPy Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('_poly1d_8hpp_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Poly1d.hpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_poly1d_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_dtype_info_8hpp.html">NumCpp/Core/DtypeInfo.hpp</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_error_8hpp.html">NumCpp/Core/Internal/Error.hpp</a>&quot;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_static_asserts_8hpp.html">NumCpp/Core/Internal/StaticAsserts.hpp</a>&quot;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_stl_algorithms_8hpp.html">NumCpp/Core/Internal/StlAlgorithms.hpp</a>&quot;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_types_8hpp.html">NumCpp/Core/Types.hpp</a>&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="diagflat_8hpp.html">NumCpp/Functions/diagflat.hpp</a>&quot;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="inv_8hpp.html">NumCpp/Linalg/inv.hpp</a>&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_nd_array_8hpp.html">NumCpp/NdArray.hpp</a>&quot;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="essentially_equal_8hpp.html">NumCpp/Utils/essentiallyEqual.hpp</a>&quot;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="num2str_8hpp.html">NumCpp/Utils/num2str.hpp</a>&quot;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_utils_2power_8hpp.html">NumCpp/Utils/power.hpp</a>&quot;</span></div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenc.html">nc</a></div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;{</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keyword">namespace </span>polynomial</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    {</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <span class="comment">//================================================================================</span></div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment"></span>        <span class="keyword">template</span>&lt;<span class="keyword">typename</span> dtype&gt;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html">   57</a></span>&#160;        <span class="keyword">class </span><a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d</a></div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        {</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        <span class="keyword">private</span>:</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;            STATIC_ASSERT_ARITHMETIC(dtype);</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        <span class="keyword">public</span>:</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a30777a0dd9351cf64f96959dad0d9ba5">Poly1d</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160; </div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a33c01905d846d32e7d49dc4e7e884551">   78</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a33c01905d846d32e7d49dc4e7e884551">Poly1d</a>(<span class="keyword">const</span> <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a>&amp; inValues, <span class="keywordtype">bool</span> isRoots = <span class="keyword">false</span>)</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;            {</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;                <span class="keywordflow">if</span> (inValues.<a class="code" href="classnc_1_1_nd_array.html#a055875abbe80163ca91328c0fa8ffbfa">size</a>() &gt; <a class="code" href="classnc_1_1_dtype_info.html">DtypeInfo&lt;uint8&gt;::max</a>())</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;                {</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;                    <a class="code" href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a>(<span class="stringliteral">&quot;can only make a polynomial of order &quot;</span> + <a class="code" href="namespacenc_1_1utils.html#a16a6ad93c420ed7a003d9921bee1a7c6">utils::num2str</a>(<a class="code" href="classnc_1_1_dtype_info.html">DtypeInfo&lt;uint8&gt;::max</a>()));</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;                }</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;                <span class="keywordflow">if</span> (isRoots)</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;                {</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;                    coefficients_.push_back(1);</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;                    <span class="keywordflow">for</span> (<span class="keyword">auto</span> value : inValues)</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;                    {</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;                        <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a> coeffs = { -(value), <span class="keyword">static_cast&lt;</span>dtype<span class="keyword">&gt;</span>(1) };</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;                        *<span class="keyword">this</span> *= <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>(coeffs, !isRoots);</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;                    }</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;                }</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;                {</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;                    <span class="keywordflow">for</span> (<span class="keyword">auto</span> value : inValues)</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;                    {</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;                        coefficients_.push_back(value);</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;                    }</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;                }</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;            }</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#adcbfe7e5fe2ed3b73bc5c81a73ece1cb">  111</a></span>&#160;<span class="comment"></span>            <span class="keywordtype">double</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#adcbfe7e5fe2ed3b73bc5c81a73ece1cb">area</a>(<span class="keywordtype">double</span> a, <span class="keywordtype">double</span> b)<span class="keyword"> const </span></div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;                <span class="keywordflow">if</span> (a &gt; b)</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;                {</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;                    <a class="code" href="namespacenc.html#a39da0502565b913855379ea1439047e1">std::swap</a>(a, b);</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;                }</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160; </div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;                <span class="keyword">auto</span> polyIntegral = <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a4c2902780c89054a6ca436a72ac77119">integ</a>();</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;                <span class="keywordflow">return</span> polyIntegral(b) - polyIntegral(a);</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;            }</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="comment"></span>            <span class="keyword">template</span>&lt;<span class="keyword">typename</span> dtypeOut&gt;</div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a0cf03b40603f490af100cdc65140ab9f">  129</a></span>&#160;            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtypeOut&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a0cf03b40603f490af100cdc65140ab9f">astype</a>()<span class="keyword"> const </span></div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;                <span class="keyword">auto</span> newCoefficients = <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtypeOut&gt;</a>(1, <span class="keyword">static_cast&lt;</span><a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a><span class="keyword">&gt;</span>(coefficients_.size()));</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;                <span class="keyword">const</span> <span class="keyword">auto</span> <span class="keyword">function</span> = [](dtype value)  -&gt; dtypeOut</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;                {</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;                    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>dtypeOut<span class="keyword">&gt;</span>(value);</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;                };</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160; </div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;                <a class="code" href="namespacenc_1_1stl__algorithms.html#a616d5dabd547326285946d0014361ab4">stl_algorithms::transform</a>(coefficients_.begin(), coefficients_.end(), newCoefficients.begin(), <span class="keyword">function</span>);</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160; </div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtypeOut&gt;</a>(newCoefficients);</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;            }</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160; </div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#abc31b5e093fd3ce5b2c14eade8d346a9">  150</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#abc31b5e093fd3ce5b2c14eade8d346a9">coefficients</a>()<span class="keyword"> const </span></div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;                <span class="keyword">auto</span> coefficientsCopy = coefficients_;</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a>(coefficientsCopy);</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;            }</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a06b9fb8a31de37a067c9ed54af6295d2">  161</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a06b9fb8a31de37a067c9ed54af6295d2">deriv</a>()<span class="keyword"> const </span></div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                <span class="keyword">const</span> <span class="keyword">auto</span> numCoefficients = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a><span class="keyword">&gt;</span>(coefficients_.size());</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                <span class="keywordflow">if</span> (numCoefficients == 0)</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                {</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;                    <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;                }</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;                <span class="keywordflow">if</span> (numCoefficients == 1)</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                {</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                    <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>({ 0 });</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;                }</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a> derivativeCofficients(1, numCoefficients - 1);</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;                <a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> counter = 0;</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> i = 1; i &lt; numCoefficients; ++i)</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;                {</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                    derivativeCofficients[counter++] = coefficients_[i] * i;</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;                }</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160; </div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>(derivativeCofficients);</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;            }</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160; </div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#abd9c3ff549505b8c42b4a4e97ff95b2c">  192</a></span>&#160;<span class="comment"></span>            <span class="keyword">static</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;double&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#abd9c3ff549505b8c42b4a4e97ff95b2c">fit</a>(<span class="keyword">const</span> <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a>&amp; xValues, <span class="keyword">const</span> <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a>&amp; yValues, <a class="code" href="namespacenc.html#a9ba5a0aa26753a185985b8273fb9062d">uint8</a> polyOrder)</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;            {</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                <span class="keyword">const</span> <span class="keyword">auto</span> numMeasurements = xValues.<a class="code" href="classnc_1_1_nd_array.html#a055875abbe80163ca91328c0fa8ffbfa">size</a>();</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160; </div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                <span class="keywordflow">if</span> (yValues.<a class="code" href="classnc_1_1_nd_array.html#a055875abbe80163ca91328c0fa8ffbfa">size</a>() != numMeasurements)</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                {</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;                    <a class="code" href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a>(<span class="stringliteral">&quot;Input x and y arrays must be of equal size.&quot;</span>);</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;                }</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160; </div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;                <span class="keywordflow">if</span> (!xValues.<a class="code" href="classnc_1_1_nd_array.html#a344f12e052eeb49cc87e361127386a64">isflat</a>())</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;                {</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;                    <a class="code" href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a>(<span class="stringliteral">&quot;Input x must be a flattened [1, n] or [n, 1] array.&quot;</span>);</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;                }</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;                <span class="keywordflow">if</span> (!yValues.<a class="code" href="classnc_1_1_nd_array.html#a344f12e052eeb49cc87e361127386a64">isflat</a>())</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;                {</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;                    <a class="code" href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a>(<span class="stringliteral">&quot;Input y must be a flattened [n, 1] array.&quot;</span>);</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;                }</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160; </div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;double&gt;</a> a(numMeasurements, polyOrder + 1);</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> measIdx = 0; measIdx &lt; numMeasurements; ++measIdx)</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                {</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                    <span class="keyword">const</span> <span class="keyword">auto</span> xDouble = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(xValues[measIdx]);</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                    <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#a9ba5a0aa26753a185985b8273fb9062d">uint8</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a> = 0; <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a> &lt; a.<a class="code" href="classnc_1_1_nd_array.html#a0049b5d6d1d99463edc773f01eb7c091">numCols</a>(); ++<a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>)</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;                    {</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                        a(measIdx, <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>) = <a class="code" href="namespacenc_1_1utils.html#a716a63ef8627c73f6cc4146481fcabdf">utils::power</a>(xDouble, <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>);</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                    }</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                }</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;double&gt;</a> aInv;</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                <span class="keywordflow">if</span> (a.<a class="code" href="classnc_1_1_nd_array.html#a302be17d815b1a4e353e6a2aade581a5">issquare</a>())</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                {</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;                    aInv = <a class="code" href="namespacenc_1_1linalg.html#ae36553eb100d8f2c2167e8ecadf2a9fc">linalg::inv</a>(a);</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;                }</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                {</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;                    <span class="comment">// psuedo-inverse</span></div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;                    <span class="keyword">auto</span> aT = a.<a class="code" href="classnc_1_1_nd_array.html#a78c99f8306415d8e0ac0e03bb69c6d29">transpose</a>();</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;                    <span class="keyword">auto</span> aTaInv = <a class="code" href="namespacenc_1_1linalg.html#ae36553eb100d8f2c2167e8ecadf2a9fc">linalg::inv</a>(aT.dot(a));</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;                    aInv = aTaInv.<a class="code" href="classnc_1_1_nd_array.html#acca065e13f826c504493a2eae31f5d0e">dot</a>(aT);</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;                }</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;              </div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;                <span class="keyword">auto</span> x = aInv.<a class="code" href="classnc_1_1_nd_array.html#acca065e13f826c504493a2eae31f5d0e">dot</a>(yValues.template astype&lt;double&gt;());</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;double&gt;</a>(x);</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;            }</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160; </div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a1526585db421bbf96dfb88d99870c201">  247</a></span>&#160;<span class="comment"></span>            <span class="keyword">static</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;double&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a1526585db421bbf96dfb88d99870c201">fit</a>(<span class="keyword">const</span> <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a>&amp; xValues, <span class="keyword">const</span> <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a>&amp; yValues,</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                <span class="keyword">const</span> <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;dtype&gt;</a>&amp; weights, <a class="code" href="namespacenc.html#a9ba5a0aa26753a185985b8273fb9062d">uint8</a> polyOrder)</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;            {</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;                <span class="keyword">const</span> <span class="keyword">auto</span> numMeasurements = xValues.<a class="code" href="classnc_1_1_nd_array.html#a055875abbe80163ca91328c0fa8ffbfa">size</a>();</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; </div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;                <span class="keywordflow">if</span> (yValues.<a class="code" href="classnc_1_1_nd_array.html#a055875abbe80163ca91328c0fa8ffbfa">size</a>() != numMeasurements)</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;                {</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;                    <a class="code" href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a>(<span class="stringliteral">&quot;Input x and y arrays must be of equal size.&quot;</span>);</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;                }</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160; </div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;                <span class="keywordflow">if</span> (weights.<a class="code" href="classnc_1_1_nd_array.html#a055875abbe80163ca91328c0fa8ffbfa">size</a>() != numMeasurements)</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;                {</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;                    <a class="code" href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a>(<span class="stringliteral">&quot;Input x and weights arrays must be of equal size.&quot;</span>);</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;                }</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160; </div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;                <span class="keywordflow">if</span> (!xValues.<a class="code" href="classnc_1_1_nd_array.html#a344f12e052eeb49cc87e361127386a64">isflat</a>())</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;                {</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;                    <a class="code" href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a>(<span class="stringliteral">&quot;Input x must be a flattened [1, n] or [n, 1] array.&quot;</span>);</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;                }</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160; </div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;                <span class="keywordflow">if</span> (!yValues.<a class="code" href="classnc_1_1_nd_array.html#a344f12e052eeb49cc87e361127386a64">isflat</a>())</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                {</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;                    <a class="code" href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a>(<span class="stringliteral">&quot;Input y must be a flattened [n, 1] array.&quot;</span>);</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;                }</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160; </div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;                <span class="keywordflow">if</span> (!weights.<a class="code" href="classnc_1_1_nd_array.html#a344f12e052eeb49cc87e361127386a64">isflat</a>())</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;                {</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;                    <a class="code" href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a>(<span class="stringliteral">&quot;Input weights must be a flattened [1, n] or [n, 1] array.&quot;</span>);</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;                }</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160; </div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;                <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;double&gt;</a> a(numMeasurements, polyOrder + 1);</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> measIdx = 0; measIdx &lt; numMeasurements; ++measIdx)</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;                {</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;                    <span class="keyword">const</span> <span class="keyword">auto</span> xDouble = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(xValues[measIdx]);</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;                    <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#a9ba5a0aa26753a185985b8273fb9062d">uint8</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a> = 0; <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a> &lt; a.<a class="code" href="classnc_1_1_nd_array.html#a0049b5d6d1d99463edc773f01eb7c091">numCols</a>(); ++<a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>)</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;                    {</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;                        a(measIdx, <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>) = <a class="code" href="namespacenc_1_1utils.html#a716a63ef8627c73f6cc4146481fcabdf">utils::power</a>(xDouble, <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>);</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;                    }</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;                }</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160; </div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;                <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;double&gt;</a> aWeighted(a.<a class="code" href="classnc_1_1_nd_array.html#a2d1b4adfe3c9897ffe3dca45e357b2b4">shape</a>());</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;                <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;double&gt;</a> yWeighted(yValues.<a class="code" href="classnc_1_1_nd_array.html#a2d1b4adfe3c9897ffe3dca45e357b2b4">shape</a>());</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160; </div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> measIdx = 0; measIdx &lt; numMeasurements; ++measIdx)</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;                {</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;                    <span class="keyword">const</span> <span class="keyword">auto</span> weight = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(weights[measIdx]);</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160; </div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;                    yWeighted[measIdx] = yValues[measIdx] * weight;</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;                    <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#a9ba5a0aa26753a185985b8273fb9062d">uint8</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a> = 0; <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a> &lt; a.<a class="code" href="classnc_1_1_nd_array.html#a0049b5d6d1d99463edc773f01eb7c091">numCols</a>(); ++<a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>)</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;                    {</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;                        aWeighted(measIdx, <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>) = a(measIdx, <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>) * weight;</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;                    }</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;                }</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160; </div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;                <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;double&gt;</a> aInv;</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;                <span class="keywordflow">if</span> (aWeighted.<a class="code" href="classnc_1_1_nd_array.html#a302be17d815b1a4e353e6a2aade581a5">issquare</a>())</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;                {</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;                    aInv = <a class="code" href="namespacenc_1_1linalg.html#ae36553eb100d8f2c2167e8ecadf2a9fc">linalg::inv</a>(aWeighted);</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;                }</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;                {</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;                    <span class="comment">// psuedo-inverse</span></div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;                    <span class="keyword">auto</span> aT = a.<a class="code" href="classnc_1_1_nd_array.html#a78c99f8306415d8e0ac0e03bb69c6d29">transpose</a>();</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;                    <span class="keyword">auto</span> aTaInv = <a class="code" href="namespacenc_1_1linalg.html#ae36553eb100d8f2c2167e8ecadf2a9fc">linalg::inv</a>(aT.dot(aWeighted));</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;                    aInv = aTaInv.<a class="code" href="classnc_1_1_nd_array.html#acca065e13f826c504493a2eae31f5d0e">dot</a>(aT);</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;                }</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160; </div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;                <span class="keyword">auto</span> x = aInv.<a class="code" href="classnc_1_1_nd_array.html#acca065e13f826c504493a2eae31f5d0e">dot</a>(yWeighted);</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;double&gt;</a>(x);</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;            }</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160; </div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a4c2902780c89054a6ca436a72ac77119">  323</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;double&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a4c2902780c89054a6ca436a72ac77119">integ</a>()<span class="keyword"> const </span></div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;                <span class="keyword">const</span> <span class="keyword">auto</span> numCoefficients = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a><span class="keyword">&gt;</span>(coefficients_.size());</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;                <span class="keywordflow">if</span> (numCoefficients == 0)</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;                {</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;                    <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;                }</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160; </div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;                <a class="code" href="classnc_1_1_nd_array.html">NdArray&lt;double&gt;</a> integralCofficients(1, numCoefficients + 1);</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;                integralCofficients[0] = 0.0;</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160; </div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> i = 0; i &lt; numCoefficients; ++i)</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;                {</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;                    integralCofficients[i + 1] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(coefficients_[i]) / <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i + 1);</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;                }</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160; </div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;double&gt;</a>(integralCofficients);</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;            }</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160; </div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">  349</a></span>&#160;<span class="comment"></span>            <a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>() const noexcept </div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;            {</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a><span class="keyword">&gt;</span>(coefficients_.size() - 1);</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;            }</div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160; </div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#ab17f5e0983d6c66a3419cb331d158395">  359</a></span>&#160;<span class="comment"></span>            <span class="keywordtype">void</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab17f5e0983d6c66a3419cb331d158395">print</a>()<span class="keyword"> const </span></div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;                std::cout &lt;&lt; *<span class="keyword">this</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;            }</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160; </div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#aa5c091077a037bab14a1c558ece21435">  371</a></span>&#160;<span class="comment"></span>            std::string <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#aa5c091077a037bab14a1c558ece21435">str</a>()<span class="keyword"> const </span></div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;                <span class="keyword">const</span> <span class="keyword">auto</span> numCoeffients = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a><span class="keyword">&gt;</span>(coefficients_.size());</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160; </div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                std::string repr = <span class="stringliteral">&quot;Poly1d&lt;&quot;</span>;</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;                <a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> <a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a> = 0;</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;                <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; coefficient : coefficients_)</div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;                {</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;                    <span class="keywordflow">if</span> (<a class="code" href="classnc_1_1_dtype_info.html">DtypeInfo&lt;dtype&gt;::isInteger</a>())</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;                    {</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                        <span class="keywordflow">if</span> (coefficient == 0)</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                        {</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;                            ++<a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a>;</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;                            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;                        }</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;                    }</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;                    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                    {</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;                        <span class="keywordflow">if</span> (<a class="code" href="namespacenc_1_1utils.html#a963b90e7c9a3b057a924298750ddf74c">utils::essentiallyEqual</a>(coefficient, <span class="keyword">static_cast&lt;</span>dtype<span class="keyword">&gt;</span>(0.0)))</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;                        {</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;                            ++<a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a>;</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                        }</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                    }</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160; </div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;                    repr += <a class="code" href="namespacenc_1_1utils.html#a16a6ad93c420ed7a003d9921bee1a7c6">utils::num2str</a>(coefficient);</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160; </div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                    <span class="keywordflow">if</span> (<a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a> &gt; 1)</div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                    {</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                        repr += <span class="stringliteral">&quot;x^&quot;</span> + <a class="code" href="namespacenc_1_1utils.html#a16a6ad93c420ed7a003d9921bee1a7c6">utils::num2str</a>(<a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a>);</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                    }</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a> == 1)</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                    {</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                        repr += <span class="stringliteral">&quot;x&quot;</span>;</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;                    }</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160; </div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                    ++<a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a>;</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160; </div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                    <span class="keywordflow">if</span> (<a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a> &lt; numCoeffients)</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;                    {</div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                        repr += <span class="stringliteral">&quot; + &quot;</span>;</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                    }</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                }</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160; </div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                <span class="keywordflow">return</span> repr + <span class="stringliteral">&quot;&gt;&quot;</span>;</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;            }</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160; </div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#ac82910d648a2a3cfd2301e12907414dd">  427</a></span>&#160;<span class="comment"></span>            dtype <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ac82910d648a2a3cfd2301e12907414dd">operator()</a>(dtype inValue) <span class="keyword">const</span> noexcept </div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;            {</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;                dtype polyValue = 0;</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                <a class="code" href="namespacenc.html#a9ba5a0aa26753a185985b8273fb9062d">uint8</a> <a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a> = 0;</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; coefficient : coefficients_)</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                {</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                    polyValue += coefficient * <a class="code" href="namespacenc_1_1utils.html#a716a63ef8627c73f6cc4146481fcabdf">utils::power</a>(inValue, <a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a>++);</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;                }</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160; </div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;                <span class="keywordflow">return</span> polyValue;</div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;            }</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160; </div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a65afb72ad35683688c7fb71ee77f839e">  448</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a65afb72ad35683688c7fb71ee77f839e">operator+</a>(<span class="keyword">const</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; inOtherPoly)<span class="keyword"> const </span></div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>(*<span class="keyword">this</span>) += inOtherPoly;</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;            }</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160; </div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a44a0331a1cfc760d7b80bfc20b661366">  462</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a44a0331a1cfc760d7b80bfc20b661366">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; inOtherPoly) </div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;            {</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;                <span class="keywordflow">if</span> (this-&gt;coefficients_.size() &lt; inOtherPoly.coefficients_.size())</div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;                {</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;                    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; coefficients_.size(); ++i)</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;                    {</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;                        coefficients_[i] += inOtherPoly.coefficients_[i];</div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;                    }</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;                    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = coefficients_.size(); i &lt; inOtherPoly.coefficients_.size(); ++i)</div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;                    {</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                        coefficients_.push_back(inOtherPoly.coefficients_[i]);</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;                    }</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;                }</div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;                {</div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;                    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; inOtherPoly.coefficients_.size(); ++i)</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;                    {</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;                        coefficients_[i] += inOtherPoly.coefficients_[i];</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;                    }</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                }</div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160; </div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;                <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;            }</div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160; </div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#ade7b4f432e1056bc66d88a131a2cbf41">  495</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ade7b4f432e1056bc66d88a131a2cbf41">operator-</a>(<span class="keyword">const</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; inOtherPoly)<span class="keyword"> const </span></div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>(*<span class="keyword">this</span>) -= inOtherPoly;</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;            }</div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160; </div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a732cca31f4b6180d0ad035a6daeb160a">  509</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a732cca31f4b6180d0ad035a6daeb160a">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; inOtherPoly) </div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;            {</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;                <span class="keywordflow">if</span> (this-&gt;coefficients_.size() &lt; inOtherPoly.coefficients_.size())</div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;                {</div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;                    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; coefficients_.size(); ++i)</div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;                    {</div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;                        coefficients_[i] -= inOtherPoly.coefficients_[i];</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;                    }</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;                    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = coefficients_.size(); i &lt; inOtherPoly.coefficients_.size(); ++i)</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;                    {</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;                        coefficients_.push_back(-inOtherPoly.coefficients_[i]);</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;                    }</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;                }</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;                {</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;                    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; inOtherPoly.coefficients_.size(); ++i)</div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;                    {</div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;                        coefficients_[i] -= inOtherPoly.coefficients_[i];</div>
<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;                    }</div>
<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;                }</div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160; </div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;                <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;            }</div>
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160; </div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#aab8cce6bf7a9400862d98684de8ef355">  542</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#aab8cce6bf7a9400862d98684de8ef355">operator*</a>(<span class="keyword">const</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; inOtherPoly)<span class="keyword"> const </span></div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>(*<span class="keyword">this</span>) *= inOtherPoly;</div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;            }</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160; </div>
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a06293521430112062f975b4854090d24">  556</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a06293521430112062f975b4854090d24">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; inOtherPoly) </div>
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;            {</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;                <span class="keyword">const</span> <a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> finalCoefficientsSize = <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>() + inOtherPoly.<a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">order</a>() + 1;</div>
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;                std::vector&lt;dtype&gt; coeffsA(finalCoefficientsSize, 0);</div>
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;                std::vector&lt;dtype&gt; coeffsB(finalCoefficientsSize, 0);</div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;                <a class="code" href="namespacenc_1_1stl__algorithms.html#ae62a4e197ec640aacea520220bd27cef">stl_algorithms::copy</a>(coefficients_.begin(), coefficients_.end(), coeffsA.begin());</div>
<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;                <a class="code" href="namespacenc_1_1stl__algorithms.html#ae62a4e197ec640aacea520220bd27cef">stl_algorithms::copy</a>(inOtherPoly.coefficients_.cbegin(), inOtherPoly.coefficients_.cend(), coeffsB.begin());</div>
<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160; </div>
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;                <span class="comment">// now multiply out the coefficients</span></div>
<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;                std::vector&lt;dtype&gt; finalCoefficients(finalCoefficientsSize, 0);</div>
<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> i = 0; i &lt; finalCoefficientsSize; ++i)</div>
<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;                {</div>
<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;                    <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> k = 0; k &lt;= i; ++k)</div>
<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;                    {</div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;                        finalCoefficients[i] += coeffsA[k] * coeffsB[i - k];</div>
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;                    }</div>
<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;                }</div>
<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160; </div>
<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;                this-&gt;coefficients_ = finalCoefficients;</div>
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;                <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;            }</div>
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160; </div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a548c945121cb39859f649cf39a6d0830">  587</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a548c945121cb39859f649cf39a6d0830">operator^</a>(<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> inPower)<span class="keyword"> const </span></div>
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;<span class="keyword">            </span>{</div>
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a30777a0dd9351cf64f96959dad0d9ba5">Poly1d</a>(*<span class="keyword">this</span>) ^= inPower;</div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;            }</div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160; </div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a930f53185992537e3eb5844ebb70bf38">  601</a></span>&#160;<span class="comment"></span>            <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a930f53185992537e3eb5844ebb70bf38">operator^=</a>(<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> inPower) </div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;            {</div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;                <span class="keywordflow">if</span> (inPower == 0)</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;                {</div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;                    coefficients_.clear();</div>
<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;                    coefficients_.push_back(1);</div>
<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;                    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;                }</div>
<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;                <span class="keywordflow">if</span> (inPower == 1)</div>
<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;                {</div>
<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;                    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;                }</div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160; </div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;                <span class="keyword">auto</span> thisPoly(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="namespacenc.html#af0f49663fb63332596e2e6327009d581">uint32</a> <a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a> = 1; <a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a> &lt; inPower; ++<a class="code" href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">power</a>)</div>
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;                {</div>
<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;                    *<span class="keyword">this</span> *= thisPoly;</div>
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;                }</div>
<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160; </div>
<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;                <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;            }</div>
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160; </div>
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;            <span class="comment">//============================================================================</span></div>
<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;            <span class="comment">// Method Description:</span></div>
<div class="line"><a name="l00632"></a><span class="lineno"><a class="line" href="classnc_1_1polynomial_1_1_poly1d.html#a589d9ff132413fa86a20f2fa7910e5df">  632</a></span>&#160;<span class="comment"></span>            <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#a589d9ff132413fa86a20f2fa7910e5df">operator&lt;&lt;</a>(std::ostream&amp; inOStream, <span class="keyword">const</span> <a class="code" href="classnc_1_1polynomial_1_1_poly1d.html">Poly1d&lt;dtype&gt;</a>&amp; inPoly) </div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;            {</div>
<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;                inOStream &lt;&lt; inPoly.<a class="code" href="classnc_1_1polynomial_1_1_poly1d.html#aa5c091077a037bab14a1c558ece21435">str</a>() &lt;&lt; std::endl;</div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;                <span class="keywordflow">return</span> inOStream;</div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;            }</div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160; </div>
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        <span class="keyword">private</span>:</div>
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;            std::vector&lt;dtype&gt;      coefficients_{};</div>
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;        };</div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;    }  <span class="comment">// namespace polynomial</span></div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;}  <span class="comment">// namespace nc</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="a_static_asserts_8hpp_html"><div class="ttname"><a href="_static_asserts_8hpp.html">StaticAsserts.hpp</a></div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a06293521430112062f975b4854090d24"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a06293521430112062f975b4854090d24">nc::polynomial::Poly1d::operator*=</a></div><div class="ttdeci">Poly1d&lt; dtype &gt; &amp; operator*=(const Poly1d&lt; dtype &gt; &amp;inOtherPoly)</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:556</div></div>
<div class="ttc" id="anamespacenc_1_1linalg_html_ae36553eb100d8f2c2167e8ecadf2a9fc"><div class="ttname"><a href="namespacenc_1_1linalg.html#ae36553eb100d8f2c2167e8ecadf2a9fc">nc::linalg::inv</a></div><div class="ttdeci">NdArray&lt; double &gt; inv(const NdArray&lt; dtype &gt; &amp;inArray)</div><div class="ttdef"><b>Definition:</b> inv.hpp:54</div></div>
<div class="ttc" id="aclassnc_1_1_nd_array_html_a2d1b4adfe3c9897ffe3dca45e357b2b4"><div class="ttname"><a href="classnc_1_1_nd_array.html#a2d1b4adfe3c9897ffe3dca45e357b2b4">nc::NdArray::shape</a></div><div class="ttdeci">Shape shape() const noexcept</div><div class="ttdef"><b>Definition:</b> NdArrayCore.hpp:4311</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_adcbfe7e5fe2ed3b73bc5c81a73ece1cb"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#adcbfe7e5fe2ed3b73bc5c81a73ece1cb">nc::polynomial::Poly1d::area</a></div><div class="ttdeci">double area(double a, double b) const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:111</div></div>
<div class="ttc" id="a_error_8hpp_html"><div class="ttname"><a href="_error_8hpp.html">Error.hpp</a></div></div>
<div class="ttc" id="aclassnc_1_1_nd_array_html_acca065e13f826c504493a2eae31f5d0e"><div class="ttname"><a href="classnc_1_1_nd_array.html#acca065e13f826c504493a2eae31f5d0e">nc::NdArray::dot</a></div><div class="ttdeci">NdArray&lt; dtype &gt; dot(const NdArray&lt; dtype &gt; &amp;inOtherArray) const</div><div class="ttdef"><b>Definition:</b> NdArrayCore.hpp:2643</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a4c2902780c89054a6ca436a72ac77119"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a4c2902780c89054a6ca436a72ac77119">nc::polynomial::Poly1d::integ</a></div><div class="ttdeci">Poly1d&lt; double &gt; integ() const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:323</div></div>
<div class="ttc" id="anamespacenc_1_1utils_html_a963b90e7c9a3b057a924298750ddf74c"><div class="ttname"><a href="namespacenc_1_1utils.html#a963b90e7c9a3b057a924298750ddf74c">nc::utils::essentiallyEqual</a></div><div class="ttdeci">bool essentiallyEqual(dtype inValue1, dtype inValue2) noexcept</div><div class="ttdef"><b>Definition:</b> essentiallyEqual.hpp:52</div></div>
<div class="ttc" id="anamespacenc_html_a9ba5a0aa26753a185985b8273fb9062d"><div class="ttname"><a href="namespacenc.html#a9ba5a0aa26753a185985b8273fb9062d">nc::uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition:</b> Types.hpp:42</div></div>
<div class="ttc" id="anamespacenc_1_1utils_html_a16a6ad93c420ed7a003d9921bee1a7c6"><div class="ttname"><a href="namespacenc_1_1utils.html#a16a6ad93c420ed7a003d9921bee1a7c6">nc::utils::num2str</a></div><div class="ttdeci">std::string num2str(dtype inNumber)</div><div class="ttdef"><b>Definition:</b> num2str.hpp:46</div></div>
<div class="ttc" id="aclassnc_1_1_nd_array_html_a302be17d815b1a4e353e6a2aade581a5"><div class="ttname"><a href="classnc_1_1_nd_array.html#a302be17d815b1a4e353e6a2aade581a5">nc::NdArray::issquare</a></div><div class="ttdeci">bool issquare() const noexcept</div><div class="ttdef"><b>Definition:</b> NdArrayCore.hpp:2943</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a548c945121cb39859f649cf39a6d0830"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a548c945121cb39859f649cf39a6d0830">nc::polynomial::Poly1d::operator^</a></div><div class="ttdeci">Poly1d&lt; dtype &gt; operator^(uint32 inPower) const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:587</div></div>
<div class="ttc" id="aclassnc_1_1_nd_array_html_a78c99f8306415d8e0ac0e03bb69c6d29"><div class="ttname"><a href="classnc_1_1_nd_array.html#a78c99f8306415d8e0ac0e03bb69c6d29">nc::NdArray::transpose</a></div><div class="ttdeci">NdArray&lt; dtype &gt; transpose() const</div><div class="ttdef"><b>Definition:</b> NdArrayCore.hpp:4607</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a65afb72ad35683688c7fb71ee77f839e"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a65afb72ad35683688c7fb71ee77f839e">nc::polynomial::Poly1d::operator+</a></div><div class="ttdeci">Poly1d&lt; dtype &gt; operator+(const Poly1d&lt; dtype &gt; &amp;inOtherPoly) const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:448</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html">nc::polynomial::Poly1d</a></div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:57</div></div>
<div class="ttc" id="aclassnc_1_1_nd_array_html"><div class="ttname"><a href="classnc_1_1_nd_array.html">nc::NdArray&lt; dtype &gt;</a></div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a930f53185992537e3eb5844ebb70bf38"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a930f53185992537e3eb5844ebb70bf38">nc::polynomial::Poly1d::operator^=</a></div><div class="ttdeci">Poly1d&lt; dtype &gt; &amp; operator^=(uint32 inPower)</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:601</div></div>
<div class="ttc" id="anamespacenc_1_1stl__algorithms_html_a616d5dabd547326285946d0014361ab4"><div class="ttname"><a href="namespacenc_1_1stl__algorithms.html#a616d5dabd547326285946d0014361ab4">nc::stl_algorithms::transform</a></div><div class="ttdeci">OutputIt transform(InputIt first, InputIt last, OutputIt destination, UnaryOperation unaryFunction)</div><div class="ttdef"><b>Definition:</b> StlAlgorithms.hpp:702</div></div>
<div class="ttc" id="anamespacenc_html_af0f49663fb63332596e2e6327009d581"><div class="ttname"><a href="namespacenc.html#af0f49663fb63332596e2e6327009d581">nc::uint32</a></div><div class="ttdeci">std::uint32_t uint32</div><div class="ttdef"><b>Definition:</b> Types.hpp:40</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_ab978ca2f65c7cd640309c1be86aa9141"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#ab978ca2f65c7cd640309c1be86aa9141">nc::polynomial::Poly1d::order</a></div><div class="ttdeci">uint32 order() const noexcept</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:349</div></div>
<div class="ttc" id="aclassnc_1_1_nd_array_html_a0049b5d6d1d99463edc773f01eb7c091"><div class="ttname"><a href="classnc_1_1_nd_array.html#a0049b5d6d1d99463edc773f01eb7c091">nc::NdArray::numCols</a></div><div class="ttdeci">uint32 numCols() const noexcept</div><div class="ttdef"><b>Definition:</b> NdArrayCore.hpp:3430</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_abd9c3ff549505b8c42b4a4e97ff95b2c"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#abd9c3ff549505b8c42b4a4e97ff95b2c">nc::polynomial::Poly1d::fit</a></div><div class="ttdeci">static Poly1d&lt; double &gt; fit(const NdArray&lt; dtype &gt; &amp;xValues, const NdArray&lt; dtype &gt; &amp;yValues, uint8 polyOrder)</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:192</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_ac82910d648a2a3cfd2301e12907414dd"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#ac82910d648a2a3cfd2301e12907414dd">nc::polynomial::Poly1d::operator()</a></div><div class="ttdeci">dtype operator()(dtype inValue) const noexcept</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:427</div></div>
<div class="ttc" id="a_nd_array_8hpp_html"><div class="ttname"><a href="_nd_array_8hpp.html">NdArray.hpp</a></div></div>
<div class="ttc" id="anum2str_8hpp_html"><div class="ttname"><a href="num2str_8hpp.html">num2str.hpp</a></div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a732cca31f4b6180d0ad035a6daeb160a"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a732cca31f4b6180d0ad035a6daeb160a">nc::polynomial::Poly1d::operator-=</a></div><div class="ttdeci">Poly1d&lt; dtype &gt; &amp; operator-=(const Poly1d&lt; dtype &gt; &amp;inOtherPoly)</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:509</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a1526585db421bbf96dfb88d99870c201"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a1526585db421bbf96dfb88d99870c201">nc::polynomial::Poly1d::fit</a></div><div class="ttdeci">static Poly1d&lt; double &gt; fit(const NdArray&lt; dtype &gt; &amp;xValues, const NdArray&lt; dtype &gt; &amp;yValues, const NdArray&lt; dtype &gt; &amp;weights, uint8 polyOrder)</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:247</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a33c01905d846d32e7d49dc4e7e884551"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a33c01905d846d32e7d49dc4e7e884551">nc::polynomial::Poly1d::Poly1d</a></div><div class="ttdeci">Poly1d(const NdArray&lt; dtype &gt; &amp;inValues, bool isRoots=false)</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:78</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a06b9fb8a31de37a067c9ed54af6295d2"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a06b9fb8a31de37a067c9ed54af6295d2">nc::polynomial::Poly1d::deriv</a></div><div class="ttdeci">Poly1d&lt; dtype &gt; deriv() const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:161</div></div>
<div class="ttc" id="anamespacenc_1_1stl__algorithms_html_ae62a4e197ec640aacea520220bd27cef"><div class="ttname"><a href="namespacenc_1_1stl__algorithms.html#ae62a4e197ec640aacea520220bd27cef">nc::stl_algorithms::copy</a></div><div class="ttdeci">OutputIt copy(InputIt first, InputIt last, OutputIt destination) noexcept</div><div class="ttdef"><b>Definition:</b> StlAlgorithms.hpp:95</div></div>
<div class="ttc" id="aclassnc_1_1_nd_array_html_a344f12e052eeb49cc87e361127386a64"><div class="ttname"><a href="classnc_1_1_nd_array.html#a344f12e052eeb49cc87e361127386a64">nc::NdArray::isflat</a></div><div class="ttdeci">bool isflat() const noexcept</div><div class="ttdef"><b>Definition:</b> NdArrayCore.hpp:2880</div></div>
<div class="ttc" id="aclassnc_1_1_nd_array_html_a055875abbe80163ca91328c0fa8ffbfa"><div class="ttname"><a href="classnc_1_1_nd_array.html#a055875abbe80163ca91328c0fa8ffbfa">nc::NdArray::size</a></div><div class="ttdeci">size_type size() const noexcept</div><div class="ttdef"><b>Definition:</b> NdArrayCore.hpp:4325</div></div>
<div class="ttc" id="a_utils_2power_8hpp_html"><div class="ttname"><a href="_utils_2power_8hpp.html">power.hpp</a></div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a589d9ff132413fa86a20f2fa7910e5df"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a589d9ff132413fa86a20f2fa7910e5df">nc::polynomial::Poly1d::operator&lt;&lt;</a></div><div class="ttdeci">friend std::ostream &amp; operator&lt;&lt;(std::ostream &amp;inOStream, const Poly1d&lt; dtype &gt; &amp;inPoly)</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:632</div></div>
<div class="ttc" id="anamespacenc_html"><div class="ttname"><a href="namespacenc.html">nc</a></div><div class="ttdef"><b>Definition:</b> Coordinate.hpp:44</div></div>
<div class="ttc" id="anamespacenc_html_a39da0502565b913855379ea1439047e1"><div class="ttname"><a href="namespacenc.html#a39da0502565b913855379ea1439047e1">nc::swap</a></div><div class="ttdeci">void swap(NdArray&lt; dtype &gt; &amp;inArray1, NdArray&lt; dtype &gt; &amp;inArray2) noexcept</div><div class="ttdef"><b>Definition:</b> swap.hpp:42</div></div>
<div class="ttc" id="anamespacenc_html_a1f059635ecfc805979db6973dfa29008"><div class="ttname"><a href="namespacenc.html#a1f059635ecfc805979db6973dfa29008">nc::power</a></div><div class="ttdeci">constexpr dtype power(dtype inValue, uint8 inExponent) noexcept</div><div class="ttdef"><b>Definition:</b> Functions/power.hpp:53</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_aa5c091077a037bab14a1c558ece21435"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#aa5c091077a037bab14a1c558ece21435">nc::polynomial::Poly1d::str</a></div><div class="ttdeci">std::string str() const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:371</div></div>
<div class="ttc" id="aclassnc_1_1_dtype_info_html"><div class="ttname"><a href="classnc_1_1_dtype_info.html">nc::DtypeInfo</a></div><div class="ttdoc">Holds info about the dtype.</div><div class="ttdef"><b>Definition:</b> DtypeInfo.hpp:40</div></div>
<div class="ttc" id="a_dtype_info_8hpp_html"><div class="ttname"><a href="_dtype_info_8hpp.html">DtypeInfo.hpp</a></div></div>
<div class="ttc" id="aessentially_equal_8hpp_html"><div class="ttname"><a href="essentially_equal_8hpp.html">essentiallyEqual.hpp</a></div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_abc31b5e093fd3ce5b2c14eade8d346a9"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#abc31b5e093fd3ce5b2c14eade8d346a9">nc::polynomial::Poly1d::coefficients</a></div><div class="ttdeci">NdArray&lt; dtype &gt; coefficients() const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:150</div></div>
<div class="ttc" id="a_error_8hpp_html_af2aff1172060367b9c5398fa097fa8fd"><div class="ttname"><a href="_error_8hpp.html#af2aff1172060367b9c5398fa097fa8fd">THROW_INVALID_ARGUMENT_ERROR</a></div><div class="ttdeci">#define THROW_INVALID_ARGUMENT_ERROR(msg)</div><div class="ttdef"><b>Definition:</b> Error.hpp:36</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_aab8cce6bf7a9400862d98684de8ef355"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#aab8cce6bf7a9400862d98684de8ef355">nc::polynomial::Poly1d::operator*</a></div><div class="ttdeci">Poly1d&lt; dtype &gt; operator*(const Poly1d&lt; dtype &gt; &amp;inOtherPoly) const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:542</div></div>
<div class="ttc" id="anamespacenc_1_1utils_html_a716a63ef8627c73f6cc4146481fcabdf"><div class="ttname"><a href="namespacenc_1_1utils.html#a716a63ef8627c73f6cc4146481fcabdf">nc::utils::power</a></div><div class="ttdeci">dtype power(dtype inValue, uint8 inPower) noexcept</div><div class="ttdef"><b>Definition:</b> Utils/power.hpp:48</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a30777a0dd9351cf64f96959dad0d9ba5"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a30777a0dd9351cf64f96959dad0d9ba5">nc::polynomial::Poly1d::Poly1d</a></div><div class="ttdeci">Poly1d()=default</div></div>
<div class="ttc" id="a_stl_algorithms_8hpp_html"><div class="ttname"><a href="_stl_algorithms_8hpp.html">StlAlgorithms.hpp</a></div></div>
<div class="ttc" id="a_types_8hpp_html"><div class="ttname"><a href="_types_8hpp.html">Types.hpp</a></div></div>
<div class="ttc" id="adiagflat_8hpp_html"><div class="ttname"><a href="diagflat_8hpp.html">diagflat.hpp</a></div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_ade7b4f432e1056bc66d88a131a2cbf41"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#ade7b4f432e1056bc66d88a131a2cbf41">nc::polynomial::Poly1d::operator-</a></div><div class="ttdeci">Poly1d&lt; dtype &gt; operator-(const Poly1d&lt; dtype &gt; &amp;inOtherPoly) const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:495</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a0cf03b40603f490af100cdc65140ab9f"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a0cf03b40603f490af100cdc65140ab9f">nc::polynomial::Poly1d::astype</a></div><div class="ttdeci">Poly1d&lt; dtypeOut &gt; astype() const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:129</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_a44a0331a1cfc760d7b80bfc20b661366"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#a44a0331a1cfc760d7b80bfc20b661366">nc::polynomial::Poly1d::operator+=</a></div><div class="ttdeci">Poly1d&lt; dtype &gt; &amp; operator+=(const Poly1d&lt; dtype &gt; &amp;inOtherPoly)</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:462</div></div>
<div class="ttc" id="aclassnc_1_1polynomial_1_1_poly1d_html_ab17f5e0983d6c66a3419cb331d158395"><div class="ttname"><a href="classnc_1_1polynomial_1_1_poly1d.html#ab17f5e0983d6c66a3419cb331d158395">nc::polynomial::Poly1d::print</a></div><div class="ttdeci">void print() const</div><div class="ttdef"><b>Definition:</b> Poly1d.hpp:359</div></div>
<div class="ttc" id="ainv_8hpp_html"><div class="ttname"><a href="inv_8hpp.html">inv.hpp</a></div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_34171bd951b13a53aa9f237277a18e40.html">NumCpp</a></li><li class="navelem"><a class="el" href="dir_f27b6096a19b08ebde950a57474879cd.html">Polynomial</a></li><li class="navelem"><a class="el" href="_poly1d_8hpp.html">Poly1d.hpp</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
